package com.example.qincetest.network

/**
 * 1.如果需要框架帮你处理服务器状态码请继承它！！
 * 2.必须实现抽象方法，根据自己的业务判断返回请求结果是否成功
 */
abstract class BaseResponse<T> {

    /**
     * 需重写改方法，比如后台code的1000=成功，return code=1000
     */
    abstract fun isSuccess(): Boolean

    /**
     * 获取后台的状态码
     */
    abstract fun getResponseCode(): Int

    /**
     * 获取后台的msg
     */
    abstract fun getResponseMsg(): String

    /**
     * 请求成功后真正关心的数据
     */
    abstract fun getResponseData(): T?

}

/**
 * 1.继承 BaseResponse
 * 2.errorCode, errorMsg,  data 要根据自己服务的返回的字段来定
 * 3.重写isSucces 方法，编写你的业务需求，根据自己的条件判断数据是否请求成功
 * 4.重写 getResponseCode、getResponseData、getResponseMsg方法，传入你的 code data msg
 */
data class ApiCodeResponse<T>(var code: Int, var msg: String, var data: T?) : BaseResponse<T>() {

    override fun getResponseCode() = code

    override fun getResponseData() = data

    override fun getResponseMsg() = msg

    override fun isSuccess(): Boolean = code == 0
}